//
//  CSDatabase.h
//  CSDatabase
//
//  Created by 黄楚升 on 2021/6/14.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface CSDatabase : NSObject

- (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithDatabaseName:(NSString *)databaseName;

+ (instancetype)defaultDatabase;

/// 创建表
/// @param tableName 表名
/// @param modelClass 模型类
- (BOOL)createTable:(NSString *)tableName withModelClass:(Class)modelClass;

/// 插入数据到表中
/// @param tableName 表名
/// @param model 数据模型
- (BOOL)insertIntoTable:(NSString *)tableName withModel:(NSObject *)model;

/// 删除表中的数据
/// @param tableName 表名
/// @param whereFormat 条件语句，如果为nil，则删除所有数据
- (BOOL)deleteFromTable:(NSString *)tableName whereFormat:(NSString *)whereFormat, ...;

/// 更新表
/// @param tableName 表名
/// @param model 数据模型
/// @param whereFormat  条件语句，如果为nil，则删除所有数据
- (BOOL)updateFromTable:(NSString *)tableName withModel:(NSObject *)model whereFormat:(NSString *)whereFormat, ...;

/// 查询表中数据
/// @param tableName 表名
/// @param modelClass 返回数据所属类
/// @param whereFormat 条件语句拼接
- (nullable NSArray *)queryFromTable:(NSString *)tableName withModelClass:(Class)modelClass whereFormat:(NSString *)whereFormat, ...;
@end

NS_ASSUME_NONNULL_END
